/**
 * 
 */
package kevin.study.zephyr.domain.factory;

import java.util.Collection;

import kevin.study.zephyr.domain.model.Document;
import kevin.study.zephyr.domain.model.Form;
import kevin.study.zephyr.domain.model.Item;


/**
 * Document工厂
 * 
 * @author Kevin.Huang
 * @date 2007-9-26
 */
public interface DocumentFactory {

	/**
	 * 为Item建立索引
	 * 
	 * @param document
	 */
	void indexItem(Document document);

	/**
	 * 创建一个空的Document
	 * 
	 * @return 创建的Document
	 */
	Document createDocument();

	/**
	 * 根据Form创建Document
	 * 
	 * @param form
	 * @return 创建的Document
	 */
	Document createDocumentFromForm(Form form);

	/**
	 * 根据Docment中指定的Form来格式化Document
	 * 
	 * @param document
	 */
	void formatDocumentByForm(Document document);

	/**
	 * 将Item以特定的数据结构注入到Document中
	 * 
	 * @param document
	 * @param items
	 */
	void injectItem(Document document, Collection< Item > items);

}
